Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Uso del código generado en SP-PS1 para una aplicación Windows C# que efectúe un análisis léxico. (página 2)




Enviado por FRANCISCO RIOS ACOSTA



Partes: 1, 2

,3 y 4).
PASO
6.-
Selección de autómatas y ensamble del analizador léxico
que reconoce a los tokens Id y OpAsig.

Cierra las ventanas abiertas menos la principal de SP-PS1. Selecciona el menú Analisis lexico |
Construccion de analizadores lexicos, y verás la interfase de la fig#1.10.
Fig. No. 1.10 Selección de autómatas para el analizador léxico a construir.

Monografias.com

Uso del código generado en SP-PS1 para una aplicación Windows C# que efectúe un análisis léxico.
Ing. Francisco Ríos Acosta
Instituto Tecnológico de la Laguna, a 17 de diciembre del 2007.
pag. 9 de 16


De la ventana AUTOMATAS selecciona los autómatas Id.bmp y OpAsig.bmp. Agregalos con el
botón “Añadir en :” al analizador léxico.
La ventana ANALIZADOR LEXICO contiene ahora a los dos autómatas sleccionados, fig#1.11.


Fig. No. 1.11 Autómatas Id y OpAsig listos para el registro del ensamble del analizador léxico.

A este instante, estamos listos para ensamblar el analizador léxico. Por ensamble, entendemos que
los autómatas seleccionados y su orden, formarán un analizador léxico que reconocerá sólo al
lenguaje de los tokens añadidos.
Haz click en el botón con la imagen de una llave amarilla y contesta que sí, a la ventana que
pregunta por la confirmación del ensamble, fig#1.12.
Fig. No. 1.12 Pregunta por la confirmación del ensamble de autómatas seleccionados.

Monografias.com

Uso del código generado en SP-PS1 para una aplicación Windows C# que efectúe un análisis léxico.
Ing. Francisco Ríos Acosta
Instituto Tecnológico de la Laguna, a 17 de diciembre del 2007.
pag. 10 de 16
PASO
7.-
Configuración del Retraer() en AFD’s.


En el caso del autómata para el token Id, se requiere de retraer el puntero al caracter i-ésimo menos
1. Esto sucede cuando es necesario leer otro caracter que no forma parte del lexema respecto al
token que se reconoce.
SP-PS1 permite configurar el caso cuando un autómata requiera de la función Retraer().
Seleccionemos la opción Configurar y hagamos doble click para configurar el Retraer() para el
autómata Id, fig#1.13.
PASO
8.-
Fig. No. 1.13 Configuración del Retraer() para un cierto autómata.

Generación de código C# para el analizador léxico que
reconoce los tokens Id y OpAsig.

Una vez que hicimos las inicializaciones de rigor, podemos obtener el código C# para las 2 clases
que propongo. El libro del drágón contiene toda la teoría acerca de un análisis léxico. Mi propuesta
de clases se soporta sobre lo escrito en el libro del dragón acerca del tema.

Monografias.com

Uso del código generado en SP-PS1 para una aplicación Windows C# que efectúe un análisis léxico.
Ing. Francisco Ríos Acosta
Instituto Tecnológico de la Laguna, a 17 de diciembre del 2007.
pag. 11 de 16


Precisamente la generación de código C# por parte del programa SP-PS1, consiste de 2 clases :
class Automata y class Lexico.
Hagamos un click sobre la pestaña Codigo C# y luego otro click pero ahora sobre el botón que
genera el código –imagen de lápiz-. La salida es el código en las 2 ventanas : una para la clase
Automata y otra para la clase Lexico, figura #1.14.
Fig. No. 1.14 Generación del código C# para las clases Automata y Lexico, referente al analizador léxico para
reconocer los tokens Id y OpAsig.

CLASE AUTOMATA
/—————————————
// clase Automata
//—————————————
class Automata
{
string _textoIma;
int _edoAct;

char SigCar(ref int i)
{
if (i == _textoIma.Length)
{
i++;
return '';
}
else
return _textoIma[i++];
}

public bool Reconoce(string texto,int iniToken,ref int i,int noAuto)
{
char c;
_textoIma = texto;
string lenguaje;
switch (noAuto)
{
//————– Automata Id————–
case 0 : _edoAct = 0;
break;
//————– Automata OpAsig————–
case 1 : _edoAct = 3;
break;
}
while(i=0)
{ i=iniToken;
return false; }
break;
case 1 : c=SigCar(ref i);
if
((lenguaje="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz").IndexOf(c)>=0)
_edoAct=1; else

_edoAct=1; else
if ((lenguaje="0123456789").IndexOf(c)>=0)
_edoAct=1; else
if ((lenguaje="_").IndexOf(c)>=0)
_edoAct=1; else
‘’“”•–—
if ((lenguaje=" !"#$%&'()*+,-./:;?@[\]^`{|}~ € ‚ƒ„…†‡ˆ‰Š‹Œ Ž
˜™š›œ žŸ ¡¢£¤¥¦§¨©ª«¬-®¯°±²³´µ¶·¸¹º»¼½¾¿ntrf").IndexOf(c)>=0) _edoAct=2; else
{ i=iniToken;
return false; }
break;
case 2 : i–;
return true;
break;
//————– Automata OpAsig————–
case 3 : c=SigCar(ref i);
_edoAct=4; else
if ((lenguaje="=").IndexOf(c)>=0)
{ i=iniToken;
return false; }
break;
case 4 : return true;
break;
}
switch (_edoAct)
{
case 2 : // Autómata Id
–i;
return true;
}
return false;
}

} // fin de la clase Automata

CLASE LEXICO.
//—————————————
// clase Lexico
//—————————————
//—————————
class Lexico
{
const int TOKREC = 2;
const int MAXTOKENS = 500;
string[] _lexemas;
string[] _tokens;
string _lexema;
int _noTokens;
int _i;
int _iniToken;
Automata oAFD;

public Lexico() // constructor por defecto
{
_lexemas = new string[MAXTOKENS];
_tokens = new string[MAXTOKENS];
oAFD = new Automata();
_i = 0;
_iniToken = 0;
_noTokens = 0;
}

public void Inicia()
{
_i = 0;

Monografias.com

Uso del código generado en SP-PS1 para una aplicación Windows C# que efectúe un análisis léxico.
Instituto Tecnológico de la Laguna, a 17 de diciembre del 2007.
pag. 13 de 16
Ing. Francisco Ríos Acosta
_iniToken = 0;
_noTokens = 0;
}

public void Analiza(string texto)
{
bool recAuto;
int noAuto;
while (_i < texto.Length)
{
recAuto=false;
noAuto=0;
for(;noAuto

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter